#ifndef __LOG_SYSTEM_H__
#define __LOG_SYSTEM_H__

#include "logger.hpp"

// 使用宏函数对日志器的接口代理(代理模式)
// 全局建造日志器

namespace log_system
{
    class Logger;

    inline log_system::Logger::pointer getLogger(const std::string &logger_name)
    {
        return log_system::LoggerManager::getInstance().getLogger(logger_name);
    }

    inline log_system::Logger::pointer getRootLogger()
    {
        return log_system::LoggerManager::getInstance().defalutLogger();
    }

#define debug(format, ...) debug(__FILE__, __LINE__, format, ##__VA_ARGS__)
#define info(format, ...) info(__FILE__, __LINE__, format, ##__VA_ARGS__)
#define warning(format, ...) warning(__FILE__, __LINE__, format, ##__VA_ARGS__)
#define error(format, ...) error(__FILE__, __LINE__, format, ##__VA_ARGS__)
#define fatal(format, ...) fatal(__FILE__, __LINE__, format, ##__VA_ARGS__)

#define DEBUG(format, ...) log_system::getRootLogger()->debug(format, ##__VA_ARGS__)
#define INFO(format, ...) log_system::getRootLogger()->info(format, ##__VA_ARGS__)
#define WARNING(format, ...) log_system::getRootLogger()->warning(format, ##__VA_ARGS__)
#define ERROR(format, ...) log_system::getRootLogger()->error(format, ##__VA_ARGS__)
#define FATAL(format, ...) log_system::getRootLogger()->fatal(format, ##__VA_ARGS__)

} // namespace log_system

#endif // #ifndef __LOG_SYSTEM_H__
